package etsii.ull.es.isg;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;


public class URDAO {
	 private final String USERNAME = "isg0910e4";
	 private final String PASSWORD = "2Wl3FW";
	 Connection conn = null;
	 
	 public URDAO() throws ClassNotFoundException, SQLException {
		 String url = "jdbc:postgresql://banot.etsii.ull.es/isg0910e4";
		 conn = DriverManager.getConnection(url, USERNAME, PASSWORD);
	 }

	 // Insertar un nuevo Usuario Registrado en la base de datos
	 public int nuevo(Usuarioregistrado ur) throws SQLException {
		 int valor = 0;
		 String sql = "INSERT INTO USUARIOSREGISTRADOS (NOMBRE, DNI, USUARIO, CLAVE) VALUES (?,?,?,?)";
		 try{
			 PreparedStatement stm = conn.prepareStatement(sql);
		 
		 stm.setString(1, ur.getNombre());
		 stm.setString(2, ur.getDni());
		 stm.setString(3, ur.getUsuario());
		 stm.setString(4, ur.getClave());
			valor = stm.executeUpdate();
		 }
		 catch (SQLException e) {
			 System.out.println("Se ha producido un error al intentar registrarse" +e);
		 }
		 return valor; // indica el nÃºmero de registros insertados
	 }

	 // Buscar Usuario
	 // Buscar Usuario
	 public String buscar(String dni) throws SQLException {
		 String sql = "SELECT CLAVE FROM USUARIOSREGISTRADOS WHERE DNI = '"+ dni +"'";		 
		 //System.out.println("dni: " + dni);
		 
		 String c = null;
		 
		 try {
			 Statement stm = conn.createStatement();
			 ResultSet rs = stm.executeQuery(sql);

			 while (rs.next()) {
				 c = rs.getString(1);
			 }
		 } catch (SQLException e) {
			 System.out.println("Se ha producido un error buscando" +e);
		 }
		 
		 return c; 
		 
	 }	  
	 
	 // Listar todos los usuarios de la base de datos
	 public ArrayList<Usuarioregistrado> listarTodos() throws SQLException {
		 String sql = "SELECT * FROM USUARIOSREGISTRADOS";
		 Statement stm = conn.createStatement();
		 ResultSet rs = stm.executeQuery(sql);
		 ArrayList<Usuarioregistrado> listaUsuariosRegistrados = new ArrayList<Usuarioregistrado>();
		 while (rs.next()) {
			 Usuarioregistrado ur = new Usuarioregistrado();
			 ur.setNombre(rs.getString("NOMBRE"));
			 ur.setDni(rs.getString("DNI"));
			 ur.setUsuario(rs.getString("USUARIO"));
			 ur.setClave(rs.getString("CLAVE"));
			 listaUsuariosRegistrados.add(ur);
		 }
		 return listaUsuariosRegistrados;
	 }

	 // borrar un Usuario Registrado de la base de datos
	 public int borrar(int dni) throws SQLException {
		 String sql = "DELETE FROM USUARIOSREGISTRADOS WHERE ID = ?";
		 PreparedStatement stm = conn.prepareStatement(sql);
		 stm.setInt(1, dni);
		 int i = stm.executeUpdate();
		 return i;
	 }

	 // modificar un Usuario Registrado de la base de datos
	 public int actualizar(String usuario, String clave, String dni) throws SQLException {
		 String sql = "UPDATE USUARIOSREGISTRADOS SET CLAVE = ? WHERE DNI = ?";
		 PreparedStatement stm = conn.prepareStatement(sql);
		 stm.setString(1, clave);
		 stm.setString(2, dni);
		 int i = stm.executeUpdate();
		 return i;
	 }

}
